package br.com.portal.dao;

import java.util.ArrayList;
import java.util.List;

import java.sql.Connection;
import java.sql.SQLException;

import br.com.portal.beans.Produto;
import br.com.portal.factory.ConnectionFactory;

import java.sql.PreparedStatement;
import java.sql.ResultSet;


public class ProdutoDAO {
	public static List<Produto> buscarProduto(String q, Integer start, Integer max) throws Exception {
		List<Produto> produtos = new ArrayList<Produto>();
		Connection conn = ConnectionFactory.getConnection();
		
		String sql = "SELECT * FROM produto WHERE nome like ? LIMIT ? OFFSET ?";

		PreparedStatement stmt = conn.prepareStatement(sql);
		stmt.setString(1, '%'+q.toUpperCase()+'%');
		stmt.setInt(2, max);
		stmt.setInt(3, start);
		
		ResultSet rs = stmt.executeQuery();

		while(rs.next()) {
			Produto produto = new Produto();
			produto.setCodigo(rs.getString("codigo"));
			produto.setDescricao(rs.getString("descricao"));
			produto.setLinha(rs.getString("linha"));
			produto.setIpi(rs.getFloat("ipi"));
			produto.setPack(rs.getInt("pack"));
			produto.setDisplay(rs.getInt("display"));
			produto.setEan(rs.getString("ean"));
			produto.setDun(rs.getString("dun"));
			produto.setAltura(rs.getFloat("altura"));
			produto.setLargura(rs.getFloat("largura"));
			produto.setComprimento(rs.getFloat("comprimento"));
			produto.setAlturaMaster(rs.getFloat("altura_master"));
			produto.setLarguraMaster(rs.getFloat("largura_master"));
			produto.setComprimentoMaster(rs.getFloat("comprimento_master"));		

			produtos.add(produto);
		}
		
		return produtos;
	}
	
	public static Integer totalProduto(String q) throws Exception {
		Integer totalCount;
		Connection conn = ConnectionFactory.getConnection();
		
		String sql = "SELECT count(*) as total FROM produto WHERE nome like ? OR codigo like ?";

		PreparedStatement stmt = conn.prepareStatement(sql);
		stmt.setString(1, '%'+q.toUpperCase()+'%');
		stmt.setString(2, '%'+q.toUpperCase()+'%');

		ResultSet rs = stmt.executeQuery();
		rs.next();
		totalCount = Integer.parseInt(rs.getString("total"));
		
		return totalCount;
	}
}